package com.young.netty.gateway.interceptor;

import com.young.netty.gateway.context.HttpContext;

/**
 * 拦截器
 *
 * @author Young
 * @Date 2021-07-24 19:17
 */
public interface Interceptor {

    /**
     * 解析请求内容
     *
     * @param httpContext 请求上下文
     */
    default void parse(HttpContext httpContext) {
    }

    /**
     * 路由后端
     *
     * @param httpContext 请求上下文
     */
    default void route(HttpContext httpContext) {
    }

    /**
     * 请求后端成功之后的处理
     *
     * @param httpContext 请求上下文
     */
    default void completed(HttpContext httpContext) {
    }

    /**
     * 异常处理
     *
     * @param httpContext 请求上下文
     * @param e           异常信息
     */
    default void exception(HttpContext httpContext, Exception e) {
    }

}
